#指定32位python路径,python版本需要3.8以下
PYTHON = python
# 变量BIN: 给定的是我们想要生成的可执行文件的名称
BIN = hart.dll


INC= -I hart/lib/inc
# 变量SRC中给的是所有的想要编译的.c源文件，与makefile在同一目录下可直接写（如这里的main.c），否则需要写明相对路径（如这里的其余源文件都在目录src下）。
# 多文件时，选择用"\"进行分行处理
SRC = \
	hart/lib/src/malloc.c \
	hart/lib/src/debug.c \
	hart/lib/src/sqqueue.c \
	hart/lib/src/lib.c \
    hart/hart.c    \
    hart/hart_frame.c \
	hart/hart_cache.c \
	hart/master/src/hart_master_frame.c \
	hart/master/src/hart_master_req_user.c \
	hart/master/src/hart_master_req.c \
	hart/master/src/hart_master_rsp.c \
	hart/master/src/hart_master.c \
	hart/slave/src/hart_slave_frame.c \
	hart/slave/src/hart_slave_req_user.c \
	hart/slave/src/hart_slave_req.c \
	hart/slave/src/hart_slave_frame_mock.c \
	hart/slave/src/hart_slave.c \

	
TEST = \
	test/run.py

TEST_SIMPLE = \
	test/test_hart_slave_req.py
	
# 变量CC：给定编译器名gcc
# 变量CFLAGS：传给编译器的某些编译参数，看需求添加
CC       = gcc
CFLAGS   = -m32 -shared -std=c99 -DMASTER -DSLAVE 

# 变量GDB：给定debugger名gdb
# 变量RM：给定删除文件方式，用于后面删除所有编译所得的.o文件,linux下使用rm -rf
GDB    = gdb
RM     = rm -rf
# 变量OBJS：将变量SRC中所有的.c文件替换成以.o结尾，即将.c源文件编译成.o文件
OBJS = $(SRC:%.c=%.o)

all: so test clean

so: $(BIN)

$(BIN): $(OBJS)
	$(CC) $(CFLAGS) $^ -o $@

# pull in dependencies for .o files
-include $(OBJS:.o=.d)


%.o: %.c
	$(CC) $(CFLAGS) $(INC) -c $< -o $@


.PHONY: so test clean


ss: so test_simple clean

dev: 
	$(PYTHON) main.py

test:
	$(PYTHON) $(TEST)

test_simple:
	$(PYTHON) $(TEST_SIMPLE)

clean:
	$(RM) $(BIN) $(OBJS)
